# -*- coding: utf-8 -*-
"""
@Time    : 2024/6/27 20:24 
@Author  : ZhangShenao 
@File    : static_method.py 
@Desc    : 静态方法
使用@staticmethod装饰器来定义一个静态方法
静态方法不需要cls这个自身类的参数
如果方法需要和其它类属性或类方法交互,那么可以将其定义成类方法
如果方法无需和其它类属性或类方法交互,那么可以将其定义成静态方法
"""


class MyClass:
    # 定义类属性
    msg = 'hello'

    @classmethod
    def class_method(cls):
        """
        定义类方法
        类方法可以与类属性和其他类方法进行交互
        """
        print('invoke class method')
        print(f'class msg is: {cls.msg}')

    @staticmethod
    def static_method(arg: str):
        """
        定义静态方法
        静态方法无需cls这个自身类的参数
        静态方法完全独立于类,默认情况下不应该与类属性或类方法进行交互
        """
        print(f'invoke static method, arg is: {arg}')


if __name__ == '__main__':
    # 调用类方法
    MyClass.class_method()

    # 调用静态方法
    MyClass.static_method('zsa')
